define(function() {
	return function($compile, $scope) {
		require(
				[ "AppPathDir/product/lineInfos/support", "PDUtilDir/util",
						"PDUtilDir/tool", "PDUtilDir/slidebar",
						"PDUtilDir/inputSelect",
						"css!AppPathDir/product/lineInfos/views/css/line" ],
				function(Support, Util, Tool, Slidebar, inputSelect) {
					
					$scope.search = {};
					
					$scope.cache = {
						types : new Array(),
						
					};
					
					/* 查询 start */
					$scope.fun.search = function() {
						$scope.grid.reload({
							queryParam : $scope.search
						});
					}
					/* 查询 end */
					
					$scope.application = {
						search : {},
						cache : {
							types : new Array()
						},
						obj : {
							grid : undefined,
							slidebars : undefined,
							spots : new Array()
						},
						fun : {
							common : {
								generateSpotHTML : function() {
								},
								initEvent : function() {
								},
								refreshLinesFun : function() {
								},
								createHTML : function() {
								}
							},
							search : function() {
							},
							add : {
								create : function() {
								},
								init : function() {
								},
								save : function() {
								}
							},
							update : {
								create : function() {
								},
								init : function() {
								}
							},
							del : function() {
							},
						}
					};

					/* 新增 start */
//					$scope.application.fun.add.create = function() {
//						$.ajax({
//							url : getServer()
//									+ "/flea/hclv/getUUID.htmls",
//							method : 'get',
//							success : function(data) {
//								$scope.application.obj.slidebars = Slidebar({
//									size : 'lg',
//									url : getServer()
//													+ "/static/app/product/lineInfos/views/add.html",
//									close : true,
//									afterLoad : function($Panel) {
//										$scope.application.fun.add
//												.init({
//													code : data.data
//												});
//									}
//								})
//							}
//						});
//					};
					$scope.application.fun.add.init = function(data) {
						// reset
						$scope.application.obj.spots = new Array();
//						inputSelect.dropCache();
//						inputSelect({
//							id : "typeName",
//							key : {
//								id : "dictCode",
//								name : "dictName",
//								data : "data",
//							},
//							data : $scope.application.cache.types,
//							simpleData : true,
//							// 启用文本搜索
//							// initData:[initProvice],
//							searchAble : false,
//							callback : function(id, data) {
//								$("#type").val(id);
//							}
//						});

//						// 查询景点
//						$.ajax({
//							url : getServer()
//									+ "/flea/hclv/spot/selectAll.htmls",
//							success : function(data) {
//								$scope.application.fun.common
//										.generateSpotHTML(data.curPageData);
//							}
//						});

						/* 初始化基本信息 */
						Tool.deserialize($("#addLineFormId"), data);
						$("#code").attr("disabled", true);
						$scope.application.fun.add.save();
						/* 初始化基本信息 */
					};
					$scope.application.fun.add.save = function() {
						$("#submitBtns")
								.on(
										"click",
										function() {
											// 表单校验
											/*
											 * if(!$form.valid()){ return; }
											 */
											$("#code").attr("disabled", false);
											var lineEntity = Tool
													.serialize("addLineFormId"), lines = $scope.application.obj.spots, linesIds = new Array(); // 序列化表单
											lineEntity.lines = $scope.application.obj.spots;

											$.each(lines, function(index, row) {
												linesIds.push(row.id);
											});
											lineEntity.lines = linesIds;

											$
													.ajax({
														url : getServer()
																+ "/flea/hclv/line/save.htmls",
														data : {
															'model' : JSON
																	.stringify(lineEntity)
														},
														success : function(data) {
															$scope.application.obj.grid
																	.refresh();
															Util.alert('成功');
															$scope.application.obj.slidebars
																	.close();
														}
													});
										});
					};
					/* 新增 end */

					/* 修改 start */
					$scope.application.fun.update.create = function(row) {
						if (null != row) {
							Slidebar({
								size : 'lg',
								url : getServer()
										+ "/static/app/product/lineInfos/views/editLine.html",
//								close : true,
								afterLoad : function($Panel) {
									$scope.application.fun.update.init(row);
								}
							})
						}
					};
					$scope.application.fun.update.init = function(data) {
						Tool.deserialize($("#editLineFormId"), data);
						$("#code").attr("disabled", true);
						inputSelect.dropCache();
						inputSelect({
							id : "typeName",
							key : {
								id : "dictCode",
								name : "dictName",
								data : "data",
							},
							data : $scope.application.cache.types,
							simpleData : true,
							// 启用文本搜索
							initData : [ data.type ],
							searchAble : false,
							callback : function(id, rows) {
								$("#type").val(id);
							}
						});
						// 查询景点
						$.ajax({
							url : getServer()
									+ "/flea/hclv/spot/selectAll.htmls",
							success : function(rows) {
                                if (data.status != 200) {
                                    return;
                                }
								$scope.application.fun.common
										.generateSpotHTML(rows.curPageData);
							}
						});
						// 查询线路景点
						$
								.ajax({
									url : getServer()
											+ "/flea/hclv/line/querySpotsForLine.htmls",
									data : {
										lineId : data.id
									},
									success : function(rows) {
										$scope.application.obj.spots = rows.data;
										$scope.application.fun.common
												.refreshLinesFun();
									}
								});

						$("#submitBtns")
								.on(
										"click",
										function() {
											// 表单校验
											/*
											 * if(!$form.valid()){ return; }
											 */
											var hotelData = Tool
													.serialize("editLineFormId"), lines = $scope.application.obj.spots, // 序列化表单
											linesIds = new Array(); // 序列化表单

											$.each(lines, function(index, row) {
												linesIds.push(row.id);
											});
											hotelData.lines = linesIds;
											$
													.ajax({
														url : getServer()
																+ "/flea/hclv/line/update.htmls",
														data : {
															'model' : JSON.stringify(hotelData)
														},
														success : function(data) {
															$scope.application.obj.grid
																	.refresh();
															Util.alert('成功');
															slidebar.close();
														}
													});
										});
					};
					/* 修改 end */

					/* 删除 start */
					$scope.application.fun.del = function() {
						var selectRows = $scope.application.obj.grid
								.getSelectedRow();
						if (null != selectRows) {
							Util.confirm("是否要删除", function() {
								var ids = new Array();
								$.each(selectRows, function(index, selectRow) {
									ids.push(selectRow.id);
								});
								$.ajax({
									url : getServer()
											+ "/flea/hclv/line/delete.htmls",
									method : 'post',
									data : {
										'ids' : JSON.stringify(ids)
									},
									success : function(data) {
                                        if (data.status != 200) {
                                            return;
                                        }
										$scope.application.obj.grid.refresh();
										Util.alert(data.message);
									}
								});

							});
						} else {
							Util.alert('请选择要删除的数据！');
						}
					};
					/* 删除 end */

					/* 初始化公共组件 start */
					// 生成html,加载滚动条
					$scope.application.fun.common.generateSpotHTML = function(
							data) {
						var str = '';
						$.each(data, function(index, row) {
							str += '<li id="' + row.id + '">' + '<img src="'
									+ row.path + '" alt="' + row.name
									+ '"  desc="' + row.desc + '">' + '</li>';
						});
						$("#spotsLineInfo .generate_line .spots .list ul")
								.html(str);
						$scope.application.fun.common.initEvent();
						/*
						 * <li id="li4"><img
						 * src="../../examples/thirdParty/mCustomScrollbar/views/imgs/4.png"
						 * alt="li3" desc="li4"></li>
						 */
					};
					// 初始化事件
//					$scope.application.fun.common.initEvent = function() {
//						$("#spotsLineInfo .generate_line .spots .list")
//								.mCustomScrollbar({
//									axis : "x",
//									theme : "inset-2-dark",
//									scrollbarPosition : "outside",
//									scrollButtons : {
//										enable : true,
//										scrollType : "stepped"
//									},
//									keyboard : {
//										scrollType : "stepped"
//									},
//									mouseWheel : {
//										scrollAmount : 188
//									},
//									autoExpandScrollbar : true,
//									advanced : {
//										autoExpandHorizontalScroll : true
//									},
//									snapAmount : 188,
//									snapOffset : 65
//								});
//						$("#spotsLineInfo .generate_line .spots li")
//								.on(
//										"click",
//										function(elem) {
//											var jqLi = $(elem.currentTarget), spotsArray = $scope.application.obj.spots, jqImg = jqLi
//													.find('img'), tmp = {
//												id : jqLi.attr('id'),
//												name : jqImg.attr('alt'),
//												description : jqImg.attr('alt')
//											}, index = spotsArray.indexOf(tmp);
//
//											if (index >= 0) {
//												spotsArray.splice(index, 1);
//												jqLi.removeClass('select');
//											} else {
//												spotsArray.push(tmp);
//												jqLi.addClass('select');
//											}
//											$scope.application.fun.common
//													.refreshLinesFun();
//										});
//					};
					// 刷新线路
//					$scope.application.fun.common.refreshLinesFun = function() {
//						$scope.application.fun.common
//								.createHTML($scope.application.obj.spots)
//					};
//					// 生成线路
//					$scope.application.fun.common.createHTML = function(data) {
//						var str = '';
//						$.each(data, function(index, row) {
//							str += '<li>' + '<div class="context"><h3>'
//									+ (index + 1) + '、' + row.name + '</h3>'
//									+ '<hr />' + '<p>' + row.description
//									+ '</p>' + '<hr />' + '</li>';
//
//						});
//						$("#spotsLineInfo .generate_line .lines ul").html(str);
//						/*
//						 * <li> <div class="context"> <h3>洛神赋</h3> <hr /> <p>于是洛灵感焉，徙倚彷徨。神光离合，乍阴乍阳。
//						 * 竦轻躯以鹤立，若将飞而未翔。践椒涂之郁烈，步蘅薄而流芳。 超长吟以永慕兮，声哀厉而弥长。
//						 * 尔乃众灵杂遝，命俦啸侣。 或戏清流，或翔神渚。或采明珠，或拾翠羽。
//						 * 从南湘之二妃，携汉滨之游女。叹匏瓜之无匹兮，咏牵牛之独处。
//						 * 扬轻袿之猗靡兮，翳修袖以延伫。体迅飞凫，飘忽若神。
//						 * 凌波微步，罗袜生尘。动无常则，若危若安。进止难期，若往若还。
//						 * 转眄流精，光润玉颜。含辞未吐，气若幽兰。华容婀娜，令我忘餐。</p> <hr /> </div>
//						 * </li>
//						 */
//					};

					// 加载数据到缓存 start
					$.ajax({
						url : getServer() + "/flea/hclv/getTourism.htmls",
						success : function(data) {
                            if (data.status != 200) {
                                return;
                            }
							$scope.application.cache.types = data.data;
						}
					});
					/* 初始化公共组件 start */
					$scope.grid = Support.init($scope.application);
				})
	}
});